using System;
using System.Collections;
using System.Collections.Specialized;

////////////////////////////////////////////////////////////////////////////////////////////////////
// namespace: Dimok
//
// summary:	.
////////////////////////////////////////////////////////////////////////////////////////////////////

namespace Dimok {
	public class NameValueCollectionEx : NameValueCollection{

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Default constructor. </summary>
		///
		/// <remarks>	Dimon, 11/23/2010. </remarks>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public NameValueCollectionEx():base() {}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Constructor. </summary>
		///
		/// <remarks>	Dimon, 11/23/2010. </remarks>
		///
		/// <param name="nameValue">	A variable-length parameters list containing name value. </param>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public NameValueCollectionEx(params string[] nameValue):base(){
			for( int i = 0; i < nameValue.Length; i += 2 )
				this.Add(nameValue[i],nameValue[i+1]);
		}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	string casting operator. </summary>
		///
		/// <remarks>	Dimon, 11/23/2010. </remarks>
		///
		/// <param name="nvc">	The nvc. </param>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static implicit operator string(NameValueCollectionEx nvc){
			if( nvc == null )return "";
			ArrayList al = new ArrayList();
			foreach( string key in nvc.Keys )
				al.Add(key+":"+nvc[key]);
			return string.Join("\n\t",(string[])al.ToArray(typeof(System.String)));
		}
	}
}
